using Vin.Tool.Attributes;

namespace Vin.Tool.AspNetCore.Options;

[Option("Vin:IpAuth")]
public class VinIpAuthOption
{
    /// <summary>
    /// 白名单
    /// </summary>
    public List<string> WhiteList { get; set; } = new List<string>();

    /// <summary>
    /// 黑名单
    /// </summary>
    public List<string> BlackList { get; set; } = new List<string>();
}

[Option("Vin:Banner")]
public class BannerOption
{
    /// <summary>
    /// 内置Banner 类型
    /// </summary>
    public int? Type { get; set; } = 0;

    /// <summary>
    /// 启动Banner
    /// </summary>
    public string? Content { get; set; }
}

/// <summary>
/// Vin.Tool配置
/// </summary>
[Option("Vin")]
public class VinOption
{
    /// <summary>
    /// 网站地址
    /// </summary>
    public string? SiteUrl { get; set; }

    /// <summary>
    /// 是否启用Ip鉴权
    /// </summary>
    public VinIpAuthOption IpAuth { get; set; } = new();

    /// <summary>
    /// 启动Banner
    /// </summary>
    public BannerOption Banner { get; set; } = new();

    /// <summary>
    /// 流式返回的路由地址
    /// </summary>
    public List<string> StreamResponseRoutes { get; set; } = new();
}